package performace_test;

import stack.CandyArrayStack;
import stack.CandyLinkedListStack;
import stack.CandyStack;

/**
 * 
 * @Title: QueuePerformanceTest.java 
 * @Package test 
 * @Description: CandyArrayStack和CandyLinkedListStack的性能测试以及对比
 * @author CandyWall   
 * @date 2020年12月19日 下午4:47:55 
 * @version V1.0
 */
public class StackPerformanceTest {
	/**
	 * 测试队列出入队的性能，返回总共消耗的时间（秒）
	 * @param stack		：需要进行性能测试的队列
	 * @param opCount	：需要进行出入队的次数
	 * @return
	 */
	public static double testStack(CandyStack<Integer> stack, int opCount) {
		// 记录开始时间
		long startTime = System.nanoTime();
		// 入栈
		for(int i = 0; i < opCount; i++) {
			stack.push(i);
		}
		
		// 出栈
		for(int i = 0; i < opCount; i++) {
			stack.pop();
		}
		
		return (System.nanoTime() - startTime) / 1000_000_000.0;
	}
	
	public static void main(String[] args) {
		int opCount = 1000_0000;
		double cost1 = testStack(new CandyArrayStack<Integer>(), opCount);
		System.out.println("CandyArrayStack耗时：" + cost1 + " 秒");
		double cost2 = testStack(new CandyLinkedListStack<Integer>(), opCount);
		System.out.println("CandyLinkedListStack耗时：" + cost2 + " 秒");
	}
}
